35 - 10.3.3 Semaphor: Definition und Anwendung [ID:25073]
50 von 184 angezeigt

Ja also die Semaphore. Wir wollten zunächst erstmal die Semaphore definieren, so wie er klassisch

definiert wird. Dann schauen wir uns Anwendungsbeispiele dafür ganz kurz an, gehen dann ein bisschen

detaillierter auf die Implementierung ein und untersuchen auch so die Frage nach der Ablaufunterbrechung.

Also was geschieht denn halt, wenn bei der Ausführung gewisser Sima vor Primitiven den einfachen Prozess unterbrechen muss

und dann später fortgesetzt werden muss. Aber da kommen wir dann später noch drauf an. Erstmal die Definition.

Nun, ein Sima vor wird als eine spezielle ganz zahlige Variable

verstanden, auf der denn halt zwei Operationen definiert sind. Da haben wir einerseits die sogenannte P-Operation. P kommt aus dem holländischen

P-Operation steht für Prolag. Es gibt

Alternativen Bezeichnung dafür wie down, wait und acquire.

Nun, die Semantik dieser P-Operation ist nun die, dass der Wert des Sima fors

um eins erniedrigt wird.

Das aber in Abhängigkeit von der Art des Sima fors dann wirklich geschieht.

Es gibt die klassische Implementierung, die sieht dann eben vor, dass diese Verringerung des Wertes um eins nur dann geschieht, wenn der

resultierende Wert nicht negativ wäre und eine andere Form der Implementierung erlaubt einfach durchgehend immer eine uneingeschränkte

Erniedrigung des Sima fors Wert um eins. Wir werden das später nochmal betrachten, aber rein von der Semantik her, nämlich die Tatsache, dass

neben den Zählen ein Prozess in der P-Operation eben auch blockieren kann, ist für alle beiden Varianten

gleich. Nämlich die Tatsache, dass

wenn der Wert vor der Aktion, bevor man also

dekrementieren wollte, Null ist, dann wird es dazu führen, dass der Prozess, der diese P-Operation ausführt, eben blockieren muss. Der Prozess kommt in

dem Fall eben auf eine Warteliste und muss warten, bis er wieder freigestellt wird. Die Freistellung

von solch einem Prozess geschieht durch die V-Operation, ist die inverse Operation.

Auch hier die Abkürzung 4 verhohgt

als holländischen Begriff. Ab-Signal Release sind so die typischen gängigen englischsprachigen

Begrifflichkeiten auch für die V-Operation. V als inverse Operation

erhöht den Wert des Sima fors um eins, wenn diese Sima fors, wenn diese Operation feststellt, dass wenigstens ein Prozess

praktisch im P

auf diesen Sima fors blockiert ist, also wartet, auf einer Warteliste steht, denn wird

praktisch der Prozess freigestellt,

bereitgestellt, er wird dem Scheduler dann halt wieder zur Verfügung

gestellt und kann dann irgendwann mal seine Ausführung

fortsetzen. Welcher Prozess allerdings von der Warteliste genommen wird, ist durch die V-Operation

nicht spezifiziert. Es ist auch nicht

spezifiziert, wie denn so eine Warteliste technisch gesehen implementiert.

Ist das, ob es eine dynamische Datenstruktur ist oder ob man tatsächlich Tabellen sozusagen

absucht.

Nun beide Primitiven hier

gelten als unteilbare Operation. Die sind zumindest logisch unteilbar und je nach

Implementierung kann man die so physisch unteilbar

gestalten. Entscheidend ist, dass beide

Operationen eben als unteilbare Operationen gelten

und damit eben immer nur so ablaufen können, dass sie vor der Ausführung oder Nutzung

gleichzeitig Prozesse selbst geschützt sind.

Ursprünglich gab es nur den binären Sima fors. So hat es der Dijkstra eben auch mal ursprünglich definiert und das bedeutet,

dass denn der Wert des Sima fors eben nur 0 oder 1

sein konnte. Man hat es denn allgemein

gefasst, den Sima fors als einen wirklichen zählenden Sima fors oder sogenannten allgemeinen Sima fors

ausgelegt, wo man dem auch größere Werte zuordnen kann.

Und ist dann demzufolge natürlich etwas länger dauern wird, bis

denn sozusagen die Blockade eines solchen Prozesses dann erreicht ist. Wir werden diese beiden Sima fors Arten

dann eben auch gleich in dem Anwendungsbeispiel

Teil eines Kapitels:
10.3 Semaphor

Zugänglich über

Offener Zugang

Dauer

00:16:49 Min

Aufnahmedatum

2020-11-27

Hochgeladen am

2020-11-27 15:28:02

Sprache

de-DE

Einbetten
Wordpress FAU Plugin
iFrame
Teilen